02. Keras 中的最大池化层

__窗口为 2x2、stride 为 2 的最大池化层__

图片来源:http://cs231n.github.io/convolutional-networks/

窗口为 2x2、stride 为 2 的最大池化层

图片来源:http://cs231n.github.io/convolutional-networks/

Keras 中的最大池化层

要在 Keras 中创建最大池化层,你必须首先导入必要的模块:

from keras.layers import MaxPooling2D

然后使用以下格式创建卷积层:

MaxPooling2D(pool_size, strides, padding)

参数

你必须包含以下参数:

  • pool_size - 指定池化窗口高度和宽度的数字。

你可能还需要调整其他可选参数:

  • strides - 垂直和水平 stride。如果不指定任何值,则 strides 默认为 pool_size
  • padding - 选项包括 'valid''same'。如果不指定任何值,则 padding 设为 'valid'

注意:可以将 pool_sizestrides 表示为数字或元组。

此外,建议阅读官方文档

示例

假设我要构建一个 CNN,并且我想通过在卷积层后面添加最大池化层,降低卷积层的维度。假设卷积层的大小是 (100, 100, 15),我希望最大池化层的大小为 (50, 50, 15)。要实现这一点,我可以在最大池化层中使用 2x2 窗口,stride 设为 2,代码如下:

    MaxPooling2D(pool_size=2, strides=2)

如果你想将 stride 设为 1,但是窗口大小依然保留为 2x2,则使用以下代码:

    MaxPooling2D(pool_size=2, strides=1)

检查最大池化层的维度

将以下代码复制粘贴到叫做 pool-dims.py 的 Python 可执行文件中:

from keras.models import Sequential
from keras.layers import MaxPooling2D

model = Sequential()
model.add(MaxPooling2D(pool_size=2, strides=2, input_shape=(100, 100, 15)))
model.summary()

运行 python path/to/pool-dims.py 并查看输出。应该如下所示:

你可以随便修改 pool-dims.py 文件中的参数,并看看最大池化层的形状如何变化。